home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1997-01-28 | 21.9 KB | 684 lines
10 'INDUCALC - Inductance Calculator - 28 NOV 95 rev. 27 SEP 96 20 IF EX$=""THEN EX$="EXIT" 30 CLS:KEY OFF 40 RESTORE 50 COLOR 7,0,1 60 PI=3.14159 70 UL$=STRING$(80,205) 80 U$="####.###" 90 V$="#####.##" 100 ON ERROR GOTO 5960 110 ' 120 COLOR 15,2 130 PRINT " INDUCTANCE CALCULATOR";TAB(62);"by Bob Stein W6NBI "; 140 PRINT STRING$(80,32); 150 LOCATE CSRLIN-1,20:PRINT "edited for HAMCALC by George Murphy VE3ERP" 160 COLOR 1,0:PRINT STRING$(80,223);:COLOR 7,0 170 ' 180 PRINT " Press letter in < > to calculate:" 190 PRINT UL$; 200 PRINT " <a> INDUCTANCE of a single-layer coil" 210 PRINT " <b> Turns in a single-layer coil for a specified inductance" 220 PRINT " <c> Turns from coil stock of known pitch (turns per inch or" 230 PRINT " turns per cm.) for a specified inductance" 240 PRINT " <d> INDUCTANCE of a straight copper strap" 250 PRINT " <e> Length of a straight copper strap for a specified inductance" 260 PRINT " <f> INDUCTANCE of a transmission-line section" 270 PRINT " <g> Length of transmission line for a specified inductance" 280 PRINT " <h> INDUCTANCE of a copper wire parallel to and grounded to a "; 290 PRINT "ground plane" 300 PRINT " <i> Length of a copper wire parallel to and above a ground "; 310 PRINT "plane for a" 320 PRINT " specified inductance" 330 PRINT " <j> INDUCTANCE of a straight copper wire in free space" 340 PRINT " <k> Length of a straight copper wire for a specified inductance" 350 PRINT " <l> INDUCTANCE of a multi-layer rectangular coil" 360 PRINT " <m> INDUCTANCE of a multi-layer circular coil" 370 PRINT " <n> Turns in a multi-layer bobbin-wound coil for a specified "; 380 PRINT "inductance" 390 PRINT " - O R -" 400 PRINT " <z> to EXIT" 410 ' 420 Z$=INKEY$:IF Z$=""THEN 420 430 IF Z$="a"OR Z$="A"THEN CLS:GOSUB 660:GOTO 590 440 IF Z$="b"OR Z$="B"THEN CLS:GOSUB 2940:GOTO 590 450 IF Z$="c"OR Z$="C"THEN CLS:GOSUB 980:GOTO 590 460 IF Z$="d"OR Z$="D"THEN CLS:GOSUB 1260:GOTO 590 470 IF Z$="e"OR Z$="E"THEN CLS:GOSUB 1430:GOTO 590 480 IF Z$="f"OR Z$="F"THEN CLS:GOSUB 3210:GOTO 590 490 IF Z$="g"OR Z$="G"THEN CLS:GOSUB 3840:GOTO 590 500 IF Z$="h"OR Z$="H"THEN CLS:GOSUB 2320:GOTO 590 510 IF Z$="i"OR Z$="I"THEN CLS:GOSUB 2630:GOTO 590 520 IF Z$="j"OR Z$="J"THEN CLS:GOSUB 4350:GOTO 590 530 IF Z$="k"OR Z$="K"THEN CLS:GOSUB 5790:GOTO 590 540 IF Z$="l"OR Z$="L"THEN CLS:GOSUB 1630:GOTO 590 550 IF Z$="m"OR Z$="M"THEN CLS:GOSUB 2130:GOTO 590 560 IF Z$="n"OR Z$="N"THEN CLS:GOSUB 4480:GOTO 590 570 IF Z$="z"OR Z$="Z"THEN CLS:RUN EX$ 580 GOTO 420 590 GOSUB 6710:GOTO 30 'screen dump 600 ' 610 '.....format input line 620 LOCATE CSRLIN-1:PRINT " "; 630 LOCATE CSRLIN,49:PRINT ".....";USING U$;Z; 640 RETURN 650 ' 660 '.....single layer coil 670 REM Equations from Hank Meyer, W6GGV, as published in "QST" Apr 1992, p76 680 PRINT " SINGLE-LAYER COIL INDUCTANCE" 690 PRINT UL$; 700 GOSUB 6050 710 INPUT " ENTER: Number of turns..............................";N 720 Z=N:GOSUB 610:PRINT "" 730 PRINT " ENTER: Coil Length.............................(";UM$;")";:INPUT B 740 Z=B:GOSUB 610:PRINT " ";UM$ 750 PRINT " ENTER: Coil Inside Diameter....................(";UM$;")";:INPUT ID 760 Z=ID:GOSUB 610:PRINT " ";UM$ 770 PRINT " ENTER: Total Lead Length.......................(";UM$;")";:INPUT LG 780 Z=LG:GOSUB 610:PRINT " ";UM$ 790 GOSUB 6170 800 IF B<(2*N-1)*D THEN BEEP ELSE 890 'turn spacing less than wire diameter 810 PRINT 820 PRINT " NOT POSSIBLE! TURN SPACING IS LESS THAN WIRE DIAMETER!" 830 PRINT " INCREASE COIL LENGTH OR REDUCE WIRE SIZE !" 840 PRINT 850 PRINT " ......press any key to continue....." 860 IF INKEY$=""THEN 860 870 GOTO 30 880 ' 890 DIA=ID+D 900 A=DIA/2 910 IF X%=2 THEN LG=LG/25.4 : A=A/25.4 : B=B/25.4 : D=D/25.4 920 GOSUB 6480 930 PRINT " INDUCTANCE..................................."; 940 IF L=>1 THEN PRINT USING U$;L;:PRINT " >H" 950 IF L<1 THEN PRINT USING U$;L*1000;:PRINT " nH" 960 RETURN 970 ' 980 '.....coil turns using known winding pitch 990 PRINT " COIL TURNS REQUIRED USING KNOWN WINDING PITCH" 1000 PRINT UL$; 1010 GOSUB 6050 1020 INPUT " ENTER: Inductance..............................(>H)";LR 1030 Z=LR:GOSUB 610:PRINT " >H" 1040 IF X%=2 THEN T$="centimetre"ELSE T$="inch......" 1050 PRINT " ENTER: Turns-per-";T$;".........................";:INPUT T 1060 Z=T:GOSUB 610 1070 PRINT " ENTER: Coil Inside Diameter....................(";UM$;")";:INPUT ID 1080 Z=ID:GOSUB 610:PRINT " ";UM$ 1090 PRINT " ENTER: Total Lead Length.......................(";UM$;")";:INPUT LG 1100 Z=LG:GOSUB 610:PRINT " ";UM$ 1110 IF X%=2 THEN ID=ID/10:LG=LG/10 'mm. to cm. 1120 GOSUB 6170 1130 IF X%=2 THEN D=D/10 1140 DIA=ID+D 1150 A=DIA/2 1160 IF X%=2 THEN T=T*2.54 : A=A/2.54 : LG=LG/2.54 : D=D/2.54 1170 IF LG>0 THEN GOSUB 6610 1180 LI=LR-LW/1000 1190 P=1/T 1200 N=(5*LI+SQR(25*LI*LI+9*LI*T*T*A^3))/(T*A*A) 'Solve for initial value of N 1210 B=P*N : GOSUB 6510 'Check inductance for N turns 1220 IF L>1.001*LR OR L<0.999*LR THEN N=N*(LR/L) : GOTO 1210 'Adjust N 1230 PRINT " NUMBER OF TURNS..............................";USING U$;N 1240 RETURN 1250 ' 1260 '.....straight strap inductance 1270 PRINT " STRAIGHT STRAP INDUCTANCE" 1280 PRINT UL$; 1290 GOSUB 6050 1300 PRINT " ENTER: Strap Length............................(";UM$;")";:INPUT LG 1310 Z=LG:GOSUB 610:PRINT " ";UM$ 1320 PRINT " ENTER: Strap Width.............................(";UM$;")";:INPUT B 1330 Z=B:GOSUB 610:PRINT " ";UM$ 1340 PRINT " ENTER: Strap Thickness.........................(";UM$;")";:INPUT C 1350 Z=C:GOSUB 610:PRINT " ";UM$ 1360 IF X%=2 THEN LG=LG/25.4 : B=B/25.4 : C=C/25.4 1370 L=0.0051*LG*(LOG(2*LG/(B+C))+(0.224*(B+C)/LG)+0.5)*1000 1380 L1=L/10^3 1390 PRINT " INDUCTANCE...................................";USING U$;L1; 1400 PRINT " >H" 1410 RETURN 1420 ' 1430 '.....straight strap length 1440 PRINT " STRAIGHT STRAP LENGTH" 1450 PRINT UL$; 1460 GOSUB 6050 1470 INPUT " ENTER: Inductance..............................(>H)";L1:L=L1*10^3 1480 Z=L1:GOSUB 610:PRINT " >H" 1490 PRINT " ENTER: Strap Width.............................(";UM$;")";:INPUT B 1500 Z=B:GOSUB 610:PRINT " ";UM$ 1510 PRINT " ENTER: Strap Thickness.........................(";UM$;")";:INPUT C 1520 Z=C:GOSUB 610:PRINT " ";UM$ 1530 IF X%=2 THEN B=B/25.4 : C=C/25.4 1540 X=1 1550 LG=(0.196*L)/(LOG((2*X)/(B+C))+(0.224*(B+C)/X)+0.5) 1560 IF LG<0.999*X OR LG>1.001*X THEN X=LG ELSE 1580 1570 GOTO 1550 1580 IF X%=2 THEN LG=LG*25.4 1590 PRINT " STRAP LENGTH.................................";USING U$;LG; 1600 PRINT " ";UM$ 1610 RETURN 1620 ' 1630 '.....multi-length rectangulare coil 1640 PRINT " MULTI-LAYER RECTANGULAR COIL INDUCTANCE" 1650 PRINT UL$; 1660 PRINT 1670 J=16 1680 PRINT TAB(J);" CALLDEFSNGSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND LG SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDDEFDBLCALL SOUNDSOUNDDEFDBLCALL H CALLDEFSNGSOUNDSOUND 1690 PRINT TAB(J);" SOUNDSOUNDDEFDBLCALL CALLDEFSNGSOUNDSOUND T CALL CALL CALL 1700 PRINT TAB(J);"VARPTRSOUNDDEFDBL KEYTHENTHENTHENINSTRTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE KEYTHENTHENTHENTHENTHENCLOSE 1710 PRINT TAB(J);"CALL OPEN VARPTRSOUNDBEEPSOUNDSOUND> SOUNDSOUNDSOUNDSOUNDCOLOR OPEN OPENWENDWENDWENDWENDWENDOPEN 1720 PRINT TAB(J);"CALL OPEN CALL KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE CALL OPEN TOTHENTHENTHENTHENTHENRANDOMIZE 1730 PRINT TAB(J);"CALL OPEN CALL OPEN OPEN CALL OPEN OPEN OPEN 1740 PRINT TAB(J);"W OPEN CALL OPEN OPEN CALL OPEN OPEN OPEN 1750 PRINT TAB(J);"CALL OPEN CALL OPEN OPEN CALL OPEN OPEN OPEN 1760 PRINT TAB(J);"CALL OPEN CALL SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD CALL OPEN TOTHENTHENTHENTHENTHENRANDOMIZE 1770 PRINT TAB(J);"CALL OPEN CLSSOUNDSOUNDSOUNDSOUND windings SOUNDSOUNDSOUNDSOUND' OPEN OPENWENDWENDWENDWENDWENDOPEN 1780 PRINT TAB(J);"CLSSOUNDDEFDBL SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD SCREENTHENTHENTHENTHENTHENLOAD 1790 PRINT 1800 PRINT UL$; 1810 GOSUB 6050 1820 PRINT " ENTER: Overall Length (LG).....................(";UM$;")";:INPUT LG 1830 Z=LG:GOSUB 610:PRINT " ";UM$ 1840 PRINT " ENTER: Overall Width (W).......................(";UM$;")";:INPUT W 1850 Z=W:GOSUB 610:PRINT " ";UM$ 1860 PRINT " ENTER: Overall Height (H)......................(";UM$;")";:INPUT H 1870 Z=H:GOSUB 610:PRINT " ";UM$ 1880 PRINT " ENTER: Coil Thickness (T)......................(";UM$;")";:INPUT T 1890 Z=T:GOSUB 610:PRINT " ";UM$ 1900 PRINT " Press number in ( ) to ENTER:" 1910 PRINT " (1) Total number of turns, or"; 1920 PRINT " (2) Number of turns per layer and no. of layers" 1930 Y$=INKEY$ 1940 IF Y$="1"OR Y$="2"THEN Y%=VAL(Y$)ELSE 1930 1950 CSR=CSRLIN-2:VIEW PRINT CSR TO 24:CLS:VIEW PRINT:LOCATE CSR 1960 IF Y%=1 THEN 2030 1970 INPUT " ENTER: Number of turns per layer....................";N 1980 Z=N:GOSUB 610:PRINT "" 1990 INPUT " ENTER: Number of layers in coil.....................";M 2000 Z=M:GOSUB 610:PRINT "" 2010 N=N*M 2020 GOTO 2070 2030 INPUT " ENTER: Total number of turns........................";N 2040 Z=N:GOSUB 610:PRINT "" 2050 IF X%=2 THEN LG=LG/25.4 : W=W/25.4 : H=H/25.4 : T=T/25.4 2060 REM Formula from EDN; Aug 4, 1982; p164 (RSS Document #M905) 2070 C=LG+W-2*T 2080 L=0.07*C*C*N*N/(1.908*C+9*H+10*T) 2090 PRINT " INDUCTANCE...................................";USING U$;L; 2100 PRINT " >H (EQV10%)" 2110 RETURN 2120 ' 2130 '.....multi-layer circular coil 2140 PRINT " MULTI-LAYER CIRCULAR COIL INDUCTANCE" 2150 PRINT UL$; 2160 GOSUB 6050 2170 PRINT " ENTER: Inside Diameter of Coil.................(";UM$;")";:INPUT ID 2180 Z=ID:GOSUB 610:PRINT " ";UM$ 2190 PRINT " ENTER: Outside Diameter of Coil................(";UM$;")";:INPUT OD 2200 Z=OD:GOSUB 610:PRINT " ";UM$ 2210 PRINT " ENTER: Length of Coil..........................(";UM$;")";:INPUT W 2220 Z=W:GOSUB 610:PRINT " ";UM$ 2230 PRINT " ENTER: Number of Turns..............................";:INPUT N 2240 Z=N:GOSUB 610:PRINT " ";UM$ 2250 IF X%=2 THEN W=W/25.4 : ID=ID/25.4 : OD=OD/25.4 2260 R=(OD+ID)/4 2270 L=0.8*R*R*N*N/(6*R+9*W+5*(OD-ID)) 2280 PRINT " INDUCTANCE...................................";USING U$;L; 2290 PRINT " >H" 2300 RETURN 2310 ' 2320 '.....wire parallel to & grounded to ground plane 2330 PRINT " WIRE PARALLEL TO and GROUNDED TO A GROUND PLANE 2340 PRINT UL$; 2350 PRINT 2360 T=22 2370 PRINT TAB(T);" <SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND LG SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND>" 2380 PRINT TAB(T);"wire THENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE <SOUNDSOUNDCOLOR 2390 PRINT TAB(T);" OPEN CALL 2400 PRINT TAB(T);" OPEN H 2410 PRINT TAB(T);" OPEN CALL 2420 PRINT TAB(T);" SOUNDSOUNDSOUNDSOUND- ground plane SOUNDSOUNDSOUNDSOUNDUSRSOUND <SOUND' 2430 PRINT TAB(T);" \\\\\\\\\\\\\\\\\\\\\\\\\ 2440 PRINT UL$; 2450 GOSUB 6050 : GOSUB 6170 2460 PRINT " ENTER: Length (LG).............................(";UM$;")";:INPUT LG 2470 Z=LG:GOSUB 610:PRINT " ";UM$ 2480 PRINT " ENTER: Height (H) above ground plane...........(";UM$;")";:INPUT W 2490 Z=W:GOSUB 610:PRINT " ";UM$ 2500 TL=LG+W 2510 PRINT " Total wire length (LG+H).....................";USING U$;TL; 2520 PRINT " ";UM$ 2530 IF X%=2 THEN R=D/2 ELSE LG=25.4*LG : R=12.7*D : W=25.4*W 2540 REM Equation from 1986 ARRL Handbook 2550 K1=SQR(LG*LG+R*R) 2560 K2=SQR(LG*LG+4*W*W) 2570 L=0.2*LG*LOG((2*W/R)*((LG+K1)/(LG+K2)))+0.2*(K2-K1+(LG/4)-(2*W)+R) 2580 L1=L/10^3 2590 PRINT " INDUCTANCE for Total Length (LG+H)...........";USING U$;L1; 2600 PRINT " >H" 2610 RETURN 2620 ' 2630 '.....wire length parallel to and above ground plane 2640 PRINT " WIRE LENGTH PARALLEL TO AND ABOVE GROUND PLANE 2650 PRINT UL$; 2660 PRINT 2670 T=22 2680 PRINT TAB(T);" <SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND LG SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND>" 2690 PRINT TAB(T);"wire THENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN <SOUNDSOUNDCOLOR 2700 PRINT TAB(T);" CALL 2710 PRINT TAB(T);" H 2720 PRINT TAB(T);" CALL 2730 PRINT TAB(T);" SOUNDSOUNDSOUNDSOUND- ground plane SOUNDSOUNDSOUNDSOUNDSOUND <SOUNDSOUND' 2740 PRINT TAB(T);" \\\\\\\\\\\\\\\\\\\\\\\\\ 2750 PRINT UL$; 2760 GOSUB 6050 : GOSUB 6170 2770 INPUT " ENTER: Inductance (>H)..............................";L: 2780 Z=L:GOSUB 610:PRINT " >H" 2790 L=L*10^3 'inductance in nH 2800 PRINT " ENTER: Height (H) above ground plane...........(";UM$;")";:INPUT W 2810 Z=W:GOSUB 610:PRINT " ";UM$ 2820 IF X%=2 THEN R=D/2 ELSE R=12.7*D : W=25.4*W 2830 X=25 2840 K1=SQR(X*X+R*R) 2850 K2=SQR(X*X+4*W*W) 2860 LG=L/(0.2*LOG((2*W/R)*((X+K1)/(X+K2)))+(0.2*(K2-K1+(X/4)-(2*W)+R))/X) 2870 IF LG>0.999*X AND LG<1.001*X THEN 2890 ELSE X=LG 2880 GOTO 2840 2890 IF X%=1 THEN LG=LG/25.4 2900 PRINT " WIRE LENGTH (LG).............................";USING U$;LG; 2910 PRINT " ";UM$ 2920 GOTO 5980 2930 ' 2940 '.....single-layer coil turns 2950 PRINT " SINGLE-LAYER COIL TURNS 2960 PRINT UL$; 2970 GOSUB 6050 2980 INPUT " ENTER: Inductance..............................(>H)";LR 2990 Z=LR:GOSUB 610:PRINT " >H" 3000 PRINT " ENTER: Coil Length.............................(";UM$;")";:INPUT B 3010 Z=B:GOSUB 610:PRINT " ";UM$ 3020 PRINT " ENTER: Coil Inside Diameter....................(";UM$;")";:INPUT ID 3030 Z=ID:GOSUB 610:PRINT " ";UM$ 3040 PRINT " ENTER: Total Lead Length.......................(";UM$;")";:INPUT LG 3050 Z=LG:GOSUB 610:PRINT " ";UM$ 3060 GOSUB 6170 3070 DIA=ID+D 3080 A=DIA/2 3090 IF X%=2 THEN LG=LG/25.4 : A=A/25.4 : B=B/25.4 : D=D/25.4 3100 IF LG>0 THEN GOSUB 6610 3110 LI=LR-LW/1000 3120 N=SQR(LI*(9*A+10*B)/(A*A)) 'Solve for initial value of N 3130 GOSUB 6480 'Check inductance for N turns 3140 IF L>1.001*LR OR L<0.999*LR THEN N=N*SQR(LR/L) : GOTO 3130 'Adjust N 3150 IF B>=N*D THEN 3180 3160 PRINT " TOO MANY TURNS - REDUCE WIRE SIZE OR INCREASE COIL LENGTH" 3170 GOTO 3190 3180 PRINT " NUMBER OF TURNS..............................";USING U$;N 3190 RETURN 3200 ' 3210 '.....transmission line inductance 3220 PRINT " TRANSMISSION LINE INDUCTANCE" 3230 PRINT UL$; 3240 PRINT " Press number in < > to choose Line Length unit of measurement:" 3250 PRINT UL$; 3260 PRINT " <1> Inches" 3270 PRINT " <2> Centimetres" 3280 PRINT " <3> Electrical Degrees" 3290 PRINT " <4> Wavelengths" 3300 Z$=INKEY$:IF VAL(Z$)<1 OR VAL(Z$)>4 THEN 3300 3310 Y%=VAL(Z$) 3320 IF Y%=1 THEN L$="( inches )....." 3330 IF Y%=2 THEN L$="( centimetres )" 3340 IF Y%=3 THEN L$="( <UNK! {00F8}> ).........." 3350 IF Y%=4 THEN L$="( wavelengths )" 3360 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3 3370 PRINT " ENTER: Line Length ";L$;".............";:INPUT LG 3380 Z=LG:GOSUB 610:PRINT "" 3390 PRINT UL$; 3400 PRINT " Press number in < > to describe line:" 3410 PRINT UL$; 3420 PRINT " <1> OPEN line" 3430 PRINT " <2> SHORTED line" 3440 Z$=INKEY$ 3450 IF Z$="1"THEN T$="O":LT$="OPEN":GOTO 3480 3460 IF Z$="2"THEN T$="S":LT$="SHORTED":GOTO 3480 3470 GOTO 3440 3480 VIEW PRINT 4 TO 24:CLS:VIEW PRINT:LOCATE 4 3490 PRINT " Line Type.................................... ";LT$ 3500 INPUT " ENTER: Characteristic Impedance (ohms)..........";ZO 3510 Z=ZO:GOSUB 610:PRINT "" 3520 IF Y%>2 THEN 3550 3530 INPUT " ENTER: Velocity Factor (decimal)................";V 3540 Z=V:GOSUB 610:PRINT "" 3550 INPUT " ENTER: Frequency (MHz)..........................";F 3560 Z=F:GOSUB 610:PRINT "" 3570 IF Y%=1 THEN LG=LG*F/(11802.9*V) 3580 IF Y%=2 THEN LG=LG*F/(29979.3*V) 3590 IF Y%=3 THEN LG=LG/360 3600 WHILE LG>0.5 3610 LG=LG-0.5 3620 WEND 3630 PRINT 3640 IF LG<=0.249 OR LG>=0.251 THEN 3660 3650 PRINT " LINE IS A QUARTER-WAVE OPEN OR SHORT CIRCUIT":RETURN 3660 IF LG>=0.495 AND LG=<0.5 THEN PRINT " LINE IS A HALF-WAVE TRANSFORMER":RETURN 3670 LG=LG*2*PI 3680 IF T$="S" OR T$="s" THEN XL=ZO*TAN(LG) ELSE XL=-ZO*TAN(LG) 3690 IF XL<0 THEN PRINT " LINE IS CAPACITIVE" ELSE 3770 3700 C=ABS(1/(2*PI*F*XL)) 3710 C1=C*10^6 3720 PRINT " Capacitance..................................";USING U$;C1; 3730 PRINT " pF" 3740 PRINT " Reactance....................................";USING U$;XL; 3750 PRINT " -" 3760 RETURN 3770 L=XL/(2*PI*F) 3780 PRINT " Inductance...................................";USING U$;L; 3790 PRINT " >H" 3800 PRINT " Reactance....................................";USING U$;XL; 3810 PRINT " -" 3820 RETURN 3830 ' 3840 '.....transmission line length 3850 PRINT " TRANSMISSION LINE LENGTH" 3860 GOSUB 6050 3870 PRINT UL$; 3880 INPUT " ENTER: Inductance................................(>H)";L1:L=L1*10^3 3890 Z=L1:GOSUB 610:PRINT " >H" 3900 INPUT " ENTER: Characteristic Impedance................(ohms)";ZO 3910 Z=ZO:GOSUB 610:PRINT " -" 3920 INPUT " ENTER: Velocity Factor (decimal).....................";V 3930 Z=V:GOSUB 610:PRINT "" 3940 INPUT " ENTER: Frequency................................(MHz)";F 3950 Z=F:GOSUB 610:PRINT " MHz" 3960 PRINT UL$; 3970 PRINT " Press number in < > to describe line:" 3980 PRINT UL$; 3990 PRINT " <1> OPEN line" 4000 PRINT " <2> SHORTED line" 4010 Z$=INKEY$ 4020 IF Z$="1"THEN T$="O":LT$="OPEN":GOTO 4050 4030 IF Z$="2"THEN T$="S":LT$="SHORTED":GOTO 4050 4040 GOTO 4010 4050 VIEW PRINT 7 TO 24:CLS:VIEW PRINT:LOCATE 7 4060 PRINT " Line Type.................................... ";LT$ 4070 XL=2*PI*F*L*0.000999999 4080 LG=ATN(XL/ZO) 4090 IF T$="O" OR T$="o" THEN LG=PI-LG 4100 LG=LG/(2*PI) 'wavelength 4110 LGD=LG*360 'degrees 4120 LGI=LG*V*11802.9/F 'inches 4130 PRINT " LENGTH TO FIRST POINT HAVING";USING U$;L1;:PRINT " >H INDUCTANCE:" 4140 PRINT " Wavelengths..................................";USING U$;LG 4150 PRINT " Electrical Degrees...........................";USING U$;LGD 4160 IF X%=2 THEN 4190 4170 PRINT " Inches.......................................";USING U$;LGI 4180 GOTO 4200 4190 LGI=LGI*2.54 4200 IF X%=1 THEN 4220 4210 PRINT " Centimetres..................................";USING U$;LGI 4220 WLFS=29979.3/F 'wavelength in free space in centimetres 4230 HWC=V*WLFS/2 'RENUM wavelength in cable with velociy factor V 4240 IF X%=1 THEN K=2.54:K$="in."ELSE K=1:K$="cm." 4250 PRINT " LENGTHS TO OTHER POINTS ALSO HAVING";USING U$;L1; 4260 PRINT " >H INDUCTANCE:" 4270 PRINT " (measurements from end of cable):" 4280 FOR Z=1 TO 9 4290 PRINT TAB(26);USING V$;LGI+Z*HWC/K;:PRINT " ";K$ 4300 NEXT Z 4310 PRINT TAB(30);"continuing onward at";USING V$;HWC/K; 4320 PRINT " ";K$;" intervals."; 4330 RETURN 4340 ' 4350 '.....straight wire inductance 4360 PRINT " STRAIGHT WIRE INDUCTANCE" 4370 PRINT UL$; 4380 GOSUB 6050 : GOSUB 6170 4390 PRINT " ENTER: Wire Length.............................(";UM$;")";:INPUT LG 4400 Z=LG:GOSUB 610:PRINT " ";UM$ 4410 IF X%=2 THEN LG=LG/25.4 : D=D/25.4 4420 GOSUB 6610 4430 L1=LW/10^3 'inductance in >H 4440 PRINT " INDUCTANCE...................................";USING U$;L1; 4450 PRINT " >H" 4460 RETURN 4470 ' 4480 '.....multi-layer bobbin-wound coil 4490 REM This routine adapted from program written by Thomas N. Lockyer and 4500 REM published in March 17, 1983 issue of "EDN" 4510 PRINT " MULTI-LAYER BOBBIN-WOUND COIL DESIGN" 4520 PRINT UL$; 4530 PRINT " DIMENSIONS MUST BE ENTERED IN INCHES" 4540 PRINT UL$; 4550 PRINT " Press number in ( ) to indicate shape of bobbin:" 4560 PRINT UL$; 4570 PRINT " (1) Round" 4580 PRINT " (2) Rectangular" 4590 J$=INKEY$:IF J$="1"OR J$="2"THEN J%=VAL(J$):GOTO 4600 ELSE 4590 4600 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3 4610 ' 4620 ' .....diagram 4630 IF J%=1 THEN V$="Circular, D diameter"ELSE V$="Rectangular, W x H" 4640 T=16 4650 PRINT TAB(T);" SOUNDSOUNDDEFDBLCALL LG CALLDEFSNGSOUNDSOUND 4660 PRINT 4670 PRINT TAB(T);" WENDWENDWENDWENDWENDWEND 4680 PRINT TAB(T);" TOTHENTHENTHENTHENTHENTHENRANDOMIZE 4690 PRINT TAB(T);"Bobbin SOUNDSOUNDUSINGSOUNDSOUNDDEFDBL OPEN<SOUND- End View is ";V$ 4700 PRINT TAB(T);" TOTHENTHENTHENTHENTHENTHENRANDOMIZE 4710 PRINT TAB(T);" WENDWENDWENDWENDWENDWEND<SOUNDSOUNDSOUND windings build-up 4720 PRINT 4730 PRINT UL$; 4740 ' 4750 INPUT " ENTER: Desired Inductance.......................(>H)";H1 4760 Z=H1:GOSUB 610:PRINT " >H" 4770 ' 4780 IF J%=2 THEN 4810 4790 INPUT " ENTER: Length (LG) of circular coil............(in.)";L 4800 GOTO 4820 4810 INPUT " ENTER: Length (LG) of Rectangular Coil.........(in.)";L 4820 Z=L:GOSUB 610:PRINT " in." 4830 ' 4840 COLOR 0,7 4850 PRINT " NOTE: The estimated thickness of coil build-up must not be less "; 4860 PRINT "than 0.003";CHR$(34);" " 4870 COLOR 7,0 4880 INPUT " ENTER: Estimated thickness of coil build-up....(in.)";B 4890 CSR=CSRLIN-2:VIEW PRINT CSR TO 24:CLS:VIEW PRINT:LOCATE CSR 4900 IF B<0.003 THEN BEEP:GOTO 4840 4910 PRINT " Estimated thickness of coil build-up.........";USING U$;B; 4920 PRINT " in." 4930 ' 4940 PRINT " MUST INDUCTOR CARRY A SPECIFIED CURRENT? (y/n) " 4950 Z$=INKEY$ 4960 IF Z$="N" OR Z$="n" THEN GOSUB 4990:GOTO 5110 4970 IF Z$="Y" OR Z$="y" THEN GOSUB 4990:GOTO 5020 4980 GOTO 4950 4990 LOCATE CSRLIN-1:PRINT STRING$(80,32);:LOCATE CSRLIN-1 5000 RETURN 5010 ' 5020 COLOR 0,7 5030 PRINT " NOTE: Current must be between .019 A. and 21.0 A. " 5040 COLOR 7,0 5050 INPUT " ENTER: Required current.......................(amps)";A2 5060 CSR=CSRLIN-2:VIEW PRINT CSR TO 24:CLS:VIEW PRINT:LOCATE CSR 5070 IF A2<0.019 OR A2>21 THEN BEEP:GOTO 5020 5080 PRINT " Required current (amps)......................";USING U$;A2; 5090 PRINT " amps" 5100 ' 5110 IF J%=1 THEN 5200 5120 INPUT " ENTER: Width (W) of Rectangular Bobbin.........(in.)";Y 5130 Z=Y:GOSUB 610:PRINT " in." 5140 INPUT " ENTER: Height (H) of Rectangular Bobbin........(in.)";D 5150 Z=D:GOSUB 610:PRINT " in." 5160 C=D+Y+2*B 5170 Z=1.908*C 5180 GOTO 5230 5190 ' 5200 INPUT " ENTER: Diameter (D) of Circular Bobbin.........(in.)";D 5210 Z=D:GOSUB 610:PRINT " in." 5220 C=(D/2)+(B/2) 5230 K=9*L 5240 M=10*B 5250 IF J%=1 THEN 5300 5260 T=H1*(Z+K+M) 5270 P=T/0.07 5280 N=SQR(P)/C 5290 GOTO 5340 5300 V=6*C 5310 T=H1*(V+K+M) 5320 P=T/0.8 5330 N=SQR(P)/C 5340 A=SQR((B*L)/N)*800 5350 C1=A*A 5360 A1=C1/500 5370 REM Calc wire size (10 to 40 AWG) and circular mils 5380 E=10 5390 FOR E=10 TO 40 5400 D1=10380 5410 F=E-9 5420 FOR G=1 TO F 5430 D1=D1-0.207*D1 5440 NEXT G 5450 IF D1<C1 THEN 5470 5460 NEXT E 5470 IF Z$="N" OR Z$="n" THEN 5610 ELSE PFLAG%=PFLAG%+1 5480 IF PFLAG%=1 THEN PRINT " .......calculating - please wait!......." 5490 REM Determines wire size for specified current 5500 IF A1/A2<1.01 THEN 5550 5510 IF A1>A2 THEN 5530 5520 GOTO 5550 5530 B=B-0.05*B 5540 IF J%=1 THEN 5220 ELSE 5160 5550 IF A2/A1<1.01 THEN 5610 5560 IF A1<A2 THEN 5580 5570 GOTO 5610 5580 B=B+0.05*B 5590 IF J%=1 THEN 5220 ELSE 5160 5600 ' 5610 S=A*N/(L*800) 5620 IF A1>21 THEN PRINT "Estimated coil build-up is too large - redesign!" : RETURN 5630 IF A1<0.019 THEN PRINT "Estimated coil build-up is too small - redesign!" : RETURN 5640 IF S<0.9 THEN PRINT "Less than one coil layer - respecify coil length!" : RETURN 5650 LOCATE CSRLIN-1:PRINT STRING$(80,32);:LOCATE CSRLIN-1 5660 PRINT " Number of Turns..............................";USING U$;N 5670 PRINT " Required Coil Build-up.......................";USING U$;B; 5680 PRINT " in." 5690 PRINT " Circular mils per turn available.............";USING U$;C1 5700 PRINT " Max.Current @ 500 cm per amp.................";USING U$;A1; 5710 PRINT " amps" 5720 U$="####" 5730 PRINT " Wire Size...................................#";USING U$;E; 5740 PRINT " AWG" 5750 IF S-FIX(S)>0 THEN S=FIX(S)+1 5760 PRINT " Number of Layers.............................";USING U$;S; 5770 RETURN 5780 ' 5790 '.....straight wire length 5800 PRINT " STRAIGHT WIRE LENGTH" 5810 PRINT UL$; 5820 GOSUB 6050 : GOSUB 6170 5830 INPUT " ENTER: Inductance (>H)..............................";L: 5840 Z=L:GOSUB 610:PRINT " >H" 5850 L=L*10^3 'inductance in nH 5860 IF X%=2 THEN D=D/25.4 5870 X=1 5880 LG=0.196*L/(LOG(4*X/D)-1) 5890 IF LG>0.999*X AND LG<1.001*X THEN 5910 ELSE X=LG 5900 GOTO 5880 5910 IF X%=2 THEN LG=LG*25.4 5920 PRINT " WIRE LENGTH..................................";USING U$;LG; 5930 PRINT " ";UM$ 5940 RETURN 5950 ' 5960 '.....error message 5970 PRINT : PRINT " NO SOLUTION FOR THE DATA ENTERED" 5980 ' 5990 '.....end 6000 GOSUB 6710:CLS:GOTO 30 6010 END 6020 ' 6030 '************ sub routines ************ 6040 ' 6050 '.....metric/imperial 6060 PRINT " Press number in < > to choose standard system of measurement:" 6070 PRINT UL$; 6080 PRINT " < 1 > Metric" 6090 PRINT " < 2 > U.S.A./Imperial" 6100 X$=INKEY$ 6110 IF X$="1"THEN X%=2:UM$="mm.":GOTO 6140 6120 IF X$="2"THEN X%=1:UM$="in.":GOTO 6140 6130 GOTO 6100 6140 CSR=CSRLIN-5:VIEW PRINT CSR TO 24:CLS:VIEW PRINT:LOCATE CSR 6150 RETURN 6160 ' 6170 '.....wire size 6180 IF X%=2 THEN 6290 6190 PRINT " Do you want to enter wire diameter by its AWG size? (y/n)" 6200 Z$=INKEY$ 6210 IF Z$="y"OR Z$="Y" THEN 6240 6220 IF Z$="n"OR Z$="N"THEN 6280 6230 GOTO 6200 6240 LOCATE CSRLIN-1:PRINT STRING$(80,32);:LOCATE CSRLIN-1 6250 INPUT " ENTER: Wire Size (even no. from 10 to 40)...........";Z% 6260 GOTO 6330 6270 ' 6280 LOCATE CSRLIN-1:PRINT STRING$(80,32);:LOCATE CSRLIN-1 6290 PRINT " ENTER: Wire Diameter...........................(";UM$;")";:INPUT D 6300 Z=D:GOSUB 610:PRINT " ";UM$ 6310 RETURN 6320 ' 6330 IF Z%>=10 AND Z%<=40 AND Z%/2=INT(Z%/2) THEN 6360 6340 BEEP:GOTO 6240 6350 ' 6360 FOR J=10 TO Z% STEP 2 6370 READ D 6380 NEXT J 6390 CSR=CSRLIN-1:VIEW PRINT CSR TO 24:CLS:VIEW PRINT:LOCATE CSR 6400 PRINT " Wire Diameter................................";USING U$;D; 6410 PRINT " ";UM$;" (#";Z%;"AWG )" 6420 GOTO 6300 6430 ' 6440 REM ********************************************************************** 6450 INPUT"DO YOU WANT TO ENTER DIMENSIONS IN (1) INCHES OR (2) CENTIMETERS ";X% 6460 IF X%<1 OR X%>2 THEN PRINT "Please enter 1 or 2" : GOTO 6450 6470 RETURN 6480 REM ********************************************************************* 6490 REM W6GGV's equations 6500 P=B/N 'NOTE ==> 1/pitch 6510 G=(5/4)-LOG(2*P/D) 6520 H=0.336*(1-(2.5/N)+(3.8/N^2)-(2.5/N^3)-(0.83/N^4))+0.004 6530 R=B/DIA : C=LOG(4/R) 6540 IF 2*A/B >= 1 THEN K=(2*R/PI)*((C-1/2)+((R^2)/8)*(C+1/8)-((R^4)/64)*(C-2/3)+((5*R^6)/1024)*(C-109/120)) 6550 IF 2*A/B < 1 THEN K=1-(8*A)/(3*PI*B)+A^2/(2*B^2)-A^4/(4*B^4)+(5*A^6)/(16*B^6)-(35*A^8)/(64*B^8)+(147*A^10)/(128*B^10) 6560 L=(5.08*PI^2*A*N^2*K)/(B/(2*A))-(10.2*PI*N*(G+H)*A) 6570 IF LG>0 THEN GOSUB 6610 6580 L=(L+LW)/1000 6590 RETURN 6600 ' 6610 '.....inductance of straight wire 6620 REM Inductance of straight wire in nH 6630 LW=5.08*LG*(LOG((4*LG)/D)-0.75) 6640 RETURN 6650 ' 6660 '.....data 6670 REM Data are dia in inches of even-number wire sizes from #10 to #40 AWG 6680 DATA .1019,.08081,.06408,.05082,.0403,.03196,.02535,.0201,.01594,.01264 6690 DATA .01003,.00795,.006305,.005,.003965,.003145 6700 ' 6710 'HARDCOPY 6720 GOSUB 6830:LOCATE 25,2:COLOR 14,6 6730 PRINT " Press 1 to print screen, 2 to print screen & "; 6740 PRINT "advance paper, or 3 to continue.";:COLOR 7,0 6750 Z$=INKEY$:IF Z$="3"THEN GOSUB 6830:RETURN 6760 IF Z$="1"OR Z$="2"THEN GOSUB 6830:GOTO 6780 6770 GOTO 6750 6780 FOR QX=1 TO 24:FOR QY=1 TO 80 6790 LPRINT CHR$(SCREEN(QX,QY)); 6800 NEXT QY:NEXT QX 6810 IF Z$="2"THEN LPRINT CHR$(12) 6820 GOTO 6720 6830 LOCATE 25,1:PRINT STRING$(80,32);:RETURN